// lib/models/api_response.dart

// API响应模型，用于统一处理服务器返回的数据格式
class ApiResponse<T> {
  final int code; // 状态码
  final String message; // 消息
  final T? data; // 数据
  final bool success; // 是否成功

  ApiResponse({
    required this.code,
    required this.message,
    this.data,
    required this.success,
  });

  // 从JSON创建ApiResponse对象
  factory ApiResponse.fromJson(
    Map<String, dynamic> json,
    T? Function(dynamic)? fromJsonT,
  ) {
    // 关键修复点：安全地将 message 转换为 String
    String parsedMessage = '';
    if (json['message'] != null) {
      // 尝试直接转换为 String
      parsedMessage = json['message'].toString();
      // 如果 message 可能是 int 类型，或者其他非 String 类型，
      // .toString() 会将其转换为字符串表示
    }

    return ApiResponse<T>(
      code: json['code'] as int? ?? -1,
      message: parsedMessage, // <--- 使用安全转换后的 message
      data:
          json['data'] != null && fromJsonT != null
              ? fromJsonT(json['data'])
              : null,
      success: json['code'] == 200, // 假设状态码200表示成功
    );
  }

  // 创建成功的响应
  static ApiResponse<T> successResponse<T>(T data, {String message = '成功'}) {
    return ApiResponse<T>(
      code: 200,
      message: message,
      data: data,
      success: true,
    );
  }

  // 创建失败的响应
  static ApiResponse<T> failure<T>({
    int code = 500,
    String message = '服务器错误',
    T? data,
  }) {
    return ApiResponse<T>(
      code: code,
      message: message,
      data: data,
      success: false,
    );
  }
}
